Canigó - Servei de llistats 2.3.x
SERVEI DE LLISTATS
IntroduccióPropòsitEl servei de llistats permet la presentació de llistats HTML en el que es permet a l'usuari:
A més, proporciona ajut a l'usuari, presentant:
Context i Escenaris d'ÚsEl servei de llistats es troba dins dels serveis de Propòsit General de Canigó. Versions i DependènciesEn el present apartat es mostren quines són les versions i dependències necessàries per fer ús del Servei. Dependències BàsiquesLes dependències descrites a la següent url son requerides per tal de fer funcionar el servei: A qui va dirigitAquest document va dirigit als següents perfils:
Documents i Fonts de Referència
GlossariLog4J Value List Jakarta POI iText Hibernate Descripció DetalladaArquitectura i ComponentsExisteixen tres tipus de components. Podem classificar-los en:
Es pot trobar tota la documentació JavaDoc i el codi font referent aquests components a les següents urls: JavaDoc: http://canigo.ctti.gencat.net/confluence/canigodocs/site/canigo2_0/canigo-services-web/apidocs/index.html Llibreria de tagsEls tags que s'utilitzen són els propis de la llibreria Value List. <vlh:root/>
<vlh:retreive/>
<vlh: Pagging/> Important paging.text.totalRow={0} Total paging.text.pageFromTotal= <b>{0}</b> of {1} page(s) paging.first(off)=<img src="images/first(off).gif"> paging.first(on)=<img src="images/first(on).gif"> paging.previous(off)=<img src="images/previous(off).gif"> paging.previous(on)=<img src="images/previous(on).gif"> paging.forward(off)=<img src="images/forward(off).gif"> paging.forward(on)=<img src="images/forward(on).gif"> paging.last(off)=<img src="images/last(off).gif"> paging.last(on)=<img src="images/last(on).gif"> paging.delim= paging.focus(on)=<img src="images/focus(on).gif"> paging.focus(off)=<img src="images/focus(off).gif"> paging.focus(disabled)=<img src="images/focus(disabled).gif"> paging.focus(error)=<img src="images/focus(error).gif"> <vlh:row/> La funció d'aquest tag és la d'iteració dels resultats. || Atribut || Descripció ||
<vlh:column/>
<vlh:controls/>
<vlh:action/>
Nota <vlh:action url="categories.do?"> <vlh:addParam name="reqCode" value="searchExportPDF" temp="false"/> <bean:message key="valueListInfo.toPDF"/> </vlh:action> <vlh:addParam/> Aquest tag afegeix paràmetres al tag pare (típicament "root" o "action"). || Atribut || Descripció ||
Instal.lació i ConfiguracióInstal.lacióLa instal.lació del servei requereix de la utilització de la llibreria 'canigo-services-web-lists' i les dependències indicades a l'apartat 'Introducció-Versions i Dependències'. ConfiguracióLa configuració del servei implica:
Definició del servei i de les seves dependències Fitxer de configuració: canigo-services-web-lists.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/spring La definició del servei requereix configurar un bean "pare" amb un identificador i els següents atributs: Atributs:
També es necessari configurar les següents propietats:
Exemple:
... <bean name="valueListActionHelper" class="net.gencat.ctti.canigo.services.web.lists.impl.SimpleValueListActionHelper"> <property name="valueListHelper"> <ref bean="valueListHelper" /> </property> <property name="maxExportRows" value="2"></property> <property name="logService" ref="loggingService"/> </bean> ... ![]() Fitxer de configuració: canigo-services-web-lists.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/spring La definició del servei requereix configurar un bean "simplificador" per a executar les cerques: Atributs: || Atribut || Requerit || Descripció ||
També es necessari configurar les següents propietats:
Exemple:
... <bean id="valueListHelper" class="net.mlw.vlh.web.mvc.ValueListHandlerHelper"> <property name="valueListHandler"> <ref bean="valueListHandler" /> </property> </bean> ... ![]() Fitxer de configuració: canigo-services-web-lists.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/springLa definició del servei requereix configurar un bean "delegat" per a localitzar les cerques: Atributs:
També es necessari configurar les següents propietats:
Exemple:
... <bean name="valueListHandler" class="net.mlw.vlh.DefaultValueListHandlerImpl"> <property name="config.adapters"> <map> <entry key="productList"> <bean parent="baseHibernateAdapter"> <property name="hql"> <value> FROM net.gencat.ctti.canigo.samples.jpetstore.model.Product AS vo WHERE 1=1 /~name: AND vo.name LIKE \{name\} ~/ /~category: AND vo.category.id LIKE \{category\} ~/ /sortColumn: ORDER BY vo.[sortColumn] [sortDirection]/ </value> </property> </bean> </entry> </map> </property> </bean> ... ![]() Fitxer de configuració: canigo-services-web-lists.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/springLa definició del servei requereix configurar un bean "delegat" per a executar les cerques: Atributs:
També es necessari configurar les següents propietats:
Exemple:
... <bean name="baseHibernateAdapter" class="net.mlw.vlh.adapter.hibernate3.Hibernate30Adapter"> <property name="sessionFactory" ref="sessionFactory"/> <property name="defaultNumberPerPage" value="5"/> <property name="defaultSortColumn" value="id"/> <property name="defaultSortDirection" value="asc"/> <property name="removeEmptyStrings" value="true"/> </bean> ... ![]() Fitxer de configuració: canigo-services-web-lists.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/springLa definició del servei requereix configurar un bean "configurador" per a la presentació de resultats: Atributs:
També es necessari configurar les següents propietats:
Exemple:
... <bean name="vlConfig" class="net.mlw.vlh.web.ValueListConfigBean" singleton="false"> <property name="messageSource" ref="messageSource"/> <property name="displayProviders"> <map> <entry key="ExportPDF"> <bean class="net.gencat.ctti.canigo.services.web.vlh.tag.support.PdfDisplayProvider" singleton="false"> <property name="logService" ref="loggingService"/> <property name="i18nService" ref="i18nService"/> <property name="skipColumns"> <list> <value>jsp.categories.categoryList.actions</value> <value>jsp.products.productList.actions</value> </list> </property> </bean> </entry> </map> </property> </bean> ... Enllaç d'una acció amb el seu "Value List" ![]() Fitxer de configuració: action-servlet-XXX.xml Ubicació proposada: <PROJECT_ROOT>/src/main/resources/springCada acció que implementi una búsqueda necessita la definició d'un bean que hereti del bean "pare" del servei i que tingui els següents atributs: Atributs:
Exemple:
... <property name="valueListActionHelper"> <bean parent="valueListActionHelper"> <property name="listName"> <value>categoriesList</value> </property> <property name="tableId" value="CATEGORY"/> </bean> </property> ... Utilització del serveiPer a poder utilitzar el servei, s'han de seguir els següents passos:
Eines de suportIntegració amb altres serveisServei multiidiomaEl servei de llistats s'integra amb el servei de multi idioma a partir de la propietat "messageSource" del bean "configurador" (típicament "vlConfig"). És necessari per això definir la configuració que s'utilitzarà (atribut "configName") en cadascun dels JSP de presentació de resultats Servei de persistènciaEl servei de llistats s'integra amb el servei de persistència a partir de la propietat "sessionFactory" del bean "delegat" (típicament "baseHibernateAdapter") d'executar les queries. Preguntes FreqüentsPer què el servei de llistats no em mostra els títols de les columnes? ExemplesCom exemple d'utilització del servei de llistats s'inclou el resultat d'un llistat i el codi font de la vista i la seva Action.
public class CategoryAction extends DispatchActionSupport implements UsesValueList { private ValueListActionHelper valueListActionHelper; ... public ValueListActionHelper getValueListActionHelper() { return valueListActionHelper; } public void setValueListActionHelper(ValueListActionHelper valueListActionHelper) { this.valueListActionHelper = valueListActionHelper; } ... } Codi 1. Exemple d'utilització del servei associat a una 'Action' <%@ include file="layouts/fwkTagLibs.jsp"%> <fwk:html> <!-- Search criteria --> <table cellpadding="0" cellspacing="0" border="0"> <tr> <td width="100%" align="center"> <fwk:form action="/categories.do" reqCode="search" style="height: 50px; width:100%;" > <fwk:text property="id" key="category.id" mode="E,E,E" size="4" maxlength="4" styleClass="LABEL" /> <fwk:text property="descn" key="category.descn" mode="E,E,E" size="40" maxlength="40" styleClass="LABEL" /> <layout:image styleClass="submit(reqCode:'search',message:'submit.button.search')" src="images/ast.gif"/> </fwk:form> </td> </tr> </table> <!-- Result list --> <logic:present name="list" scope="request"> <vlh:root value="list" url="categories.do?" includeParameters="reqCode|id|descn" configName="vlConfig"> <table width="450"> <!-- pagination section --> <tr> <td align="left" nowrap="true"> <c:out value="${list.valueListInfo.totalNumberOfEntries}"/> <bean:message key="valueListInfo.totalNumberOfEntries"/> (<c:out value="${list.valueListInfo.pagingPage}" /> <bean:message key="valueListInfo.totalNumberOfEntries.of"/> <c:out value="${list.valueListInfo.totalNumberOfPages}"/>) </td> <td align="right"> <vlh:paging/> </td> </tr> <!-- end of Pagination --> <tr> <td colspan="2"> <table width="450" class="classicLook" cellspacing="0" cellpadding="0"> <vlh:row bean="job" display="<%=(String)request.getAttribute("subReqCode")%>"> <vlh:attribute name="onmouseover"> this.className='selected'; </vlh:attribute> <vlh:attribute name="onmouseout"> this.className='zebra0'; </vlh:attribute> <vlh:column titleKey="category.id" property="id" sortable="desc" /> <vlh:column titleKey="category.name" property="name" sortable="desc" /> <vlh:controls titleKey="category.control"> <vlh:action url="products.do?"> <vlh:addParam name="reqCode" value="search" temp="false" /> <bean:message key="products.edit"/> <vlh:addParam name="category" property="id" temp="false" /> </vlh:action> <vlh:action url="categories.do?"> <vlh:addParam name="reqCode" value="edit" temp="false"/> <bean:message key="category.edit"/> <vlh:addParam name="id" property="id" temp="false" /> </vlh:action> </vlh:controls> </vlh:row> </table> </td> </tr> </table> <vlh:action url="categories.do?"> <vlh:addParam name="reqCode" value="searchExportPDF" temp="false"/> <bean:message key="valueListInfo.toPDF"/> </vlh:action> </vlh:root> </logic:present> </fwk:html> Codi 2. Exemple d'utilització del servei des d'una vista JSPNota: <c:out value="$\{list.valueListInfo.totalNumberOfEntries\}"/>
A partir de la versió 2.3.16 del framework, es pot indicar l'orientació de la pàgina afegint un nou paràmetre per la request: <vlh:action url="categories.do?"> <vlh:addParam name="reqCode" value="searchExportPDF" temp="false"/> <vlh:addParam name="orientacio" value="horitzontal" temp="false"/> <bean:message key="valueListInfo.toPDF"/> </vlh:action> |